package com.song.dao.impl;

import com.song.dao.MiddleDao;
import com.song.dao.Utils;

import javax.print.DocFlavor;
import java.sql.PreparedStatement;
import java.util.ArrayList;
import java.util.List;

public class MiddleDaoImpl extends Utils implements MiddleDao {
    /**
     * 添加角色所对应的菜单（middle表）
     *
     * @param key      新添加角色的ID（roleid）
     * @param menuList 新增角色的菜单集合
     * @return 新增角色对middle数据表影响的行数
     */
    @Override
    public Integer insertMiddle(Integer key, String[] menuList) {
        int count = 0;
        try {
            String sql = "insert into middle values(null,?,?)";
            pps = getPps(sql);
            System.out.println(key);
            System.out.println("----"+menuList.length+"=====");
            for (String s : menuList) {
                pps.setInt(1, key);
                pps.setString(2, s);
                pps.addBatch();
            }

            int[] ints = pps.executeBatch();
            if (ints.length != 0) {
                return count = 1;
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            close();
        }
        return count;
    }

    /**
     * 修改middle
     *
     * @param roleid   要修改的角色ID
     * @param menuList 角色搜对应的菜单ID
     * @return 修改影响的行数
     */
    @Override
    public Integer updateMiddle(Integer roleid, String[] menuList) {
        //删除角色现有与菜单的对应关系

        try {
            String sql = "delete from middle where roleid = ?";
            List<Object> list = new ArrayList<>();
            list.add(roleid);
            update(sql, list);

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            close();
        }
        //加入新的对应关系
        return insertMiddle(roleid, menuList);
    }
    /**
     * 删除middle数据表中角色与菜单的关系
     * @param roleid 角色ID
     * @return true 删除成功 false 失败
     */
    @Override
    public Boolean deleteMiddle(Integer roleid){
        try {
            String sql = "delete from middle where roleid = ?";
            List<Object> list = new ArrayList<>();
            list.add(roleid);
            int update = update(sql, list);
            if (update > 0) {
                return true;
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            close();
        }
        return false;

    }
}
